pcworld online logo

Visual Basic ile ses dosyalar²n²z² τalmak


Visual Basic'i kullanarak Windows ses dosyalar²n² (WAV) τalabilmeniz iτin, geτen ay ⁿstⁿnde oldukτa durdu≡umuz Api fonksiyonlar²na ihtiyac²n²z var. ▌lk olarak bu fonksiyonu kullanarak ufak bir program yapt²k. Bize gerekli olanlar: dosya seτiminde kullanaca≡²m²z bir sⁿrⁿcⁿ listesi, dizin listesi ve dosya listesi, bir de seτilen dosyay² g÷rebilmemiz iτin gereken bir etiket. Formunuzun ⁿstⁿne bunlar² g÷sterildi≡i biτimde yerle■tirin ve hemen kodlar²m²z² yazmaya ba■lay²n...

Ses dosyalar²n² τalabilmek iτin ÷ncelikle bir ses kart²na ya da sesleri PC hoparl÷rⁿnden dinleyebilmek iτin bir sⁿrⁿcⁿye ihtiyac²n²z var. (Bu sⁿrⁿcⁿyⁿ PC WORLD BBS'ten edinebilirsiniz.) ▌■te ses dosyalar²n² τalabilmeniz iτin gereken API fonksiyonu ve parametreleri. Bunlar² iyice inceledikten sonra program²m²z² yazmaya ba■layabilirsiniz.

Declare Function sndPlaySound Lib "MMSYSTEM.DLL" (ByVal ses$, ByVal ozellik%) As Integer

Parametreler:

ses$
╟al²nacak ses dosyas²n² belirtir.E≡er ses dosyas² belirtilmezse o anda τalan dosya durdurulur.

ozellik%
Bu de≡i■ken yerine ses dosyas²n²n nas²l τal²naca≡²n² belirten a■a≡²daki sabitlerden biri
kullan²lmal²d²r.

SND_SYNC
Sistem olaylar²n² durdurur. Program kontrolⁿ ses dosyas² τal²nd²ktan sonra geri d÷ner.

SND_ASYNC
Ses arka planda τalar. Program kontrolⁿ ses dosyas²n²n hemen ba■²nda geri d÷ner.

SND_NODEFAULT
E≡er belirtti≡iniz ses dosyas² bulunamad²ysa hata mesaj² verilmeden programa geri d÷nⁿlⁿr.

SND_LOOP
╟almak istedi≡iniz ses dosyas² sndPlaySound fonksiyonuna bo■ bir de≡er verene kadar tekrar eder. E≡er bu ÷zelli≡i kullan²yorsan²z ayn² zamanda ses dosyas²n² geri planda τalmaya yarayan SND_ASYNC fonksiyonunu kullanmal²s²n²z.
visual basic resim1

SND_NOSTOP
E≡er herhangi bir ses o anda τal²n²yorsa istedi≡iniz dosya τal²nmaz ve bu fonksiyonu atad²≡²n²z de≡er an²nda 0 (False) olur. Bu ÷zellik ayn² zamanda o anda bir sesin τal²n²p τal²nmad²≡²n² anlaman²za da yard²mc² olur.

Not: sndPlaySound fonksiyonu e≡er belirtti≡iniz dosya sorunsuz olarak τal²n²rsa 1 de≡erini d÷ndⁿrⁿr.

Gelelim program²m²z²n kodlar²na. A■a≡²daki birinci paragraf program²n di≡er modⁿllerinden ayr² bir yere yaz²lmal²d²r. (WAVCAL.BAS gibi.)

Declare Function sndPlaySound 
Lib "MMSYSTEM.DLL" (ByVal ses$, ByVal ozellik%) As Integer
Global Const SND_SYNC = &H0

Global Const SND_ASYN = &H1

Global Const SND_NODEFAULT = &H2

Global Const SND_LOOP = &H8

Global Const SND_NOSTOP = &H10


Sub Form_Load ()
ChDir "c:\windows" 
label1.Caption = ""
file1.Pattern = "*.wav" ' Sadece WAV uzant²l² dosyalar²m²z listelensin
End Sub

Sub Drive1_Change ()
dir1.Path = drive1.Drive ' Sⁿrⁿcⁿ de≡i■ti≡inde dizin listesini yenile
End Sub

Sub Dir1_Change ()
file1.Path = dir1.Path ' dizin de≡i■ti≡inde dosya listesini yenile
End Sub

Sub File1_Click ()
ses$ = dir1.Path + "\" + file1.FileName 
If Mid$(ses$, 4, 1) = "\" Then ' E≡er ana dizindeysek araya \ karakterini sokma
ses$ = dir1.Path + file1.FileName
End If

Burada Genel Dialog kutusunu kullanmamam²z²n bir dez avantaj²n² g÷rⁿyorsunuz. Her ne kadar bu kodu yazmadan program²m²z τal²■sa da liste kutumuz ana dizini g÷rdⁿ≡ⁿnde ses dosyam²z²n yerini bulmakta bir sorun ya■anacakt²r. Yani yukar²daki kod parτas² her seferinde bu sorunu gidermek iτin kullan²labilir.

  label1.Caption = " Ses: " + ses$
  ozellik% = SND_ASYNC And SND_NODEFAULT
  X% = sndPlaySound(ses$, ozellik%)
End Sub
▌leti■im iτin: Deyvi Levitas dlevitas@pcworld.com.tr